package View;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.ComboBoxModel;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.SwingConstants;

import javax.swing.WindowConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.SwingUtilities;

import Controller.Sistema;
import Model.ClienteView;
import Model.LineaView;
import Model.LineaAdicionalView;
import Model.PlanView;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class GestionLineas extends javax.swing.JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel lblCliente;
	private JList<LineaView> lstLineasCliente;
	private JButton btnVerConsumos;
	private JLabel lblNombre;
	private JTextField txtNombreAdicional;
	private JLabel lblPlanesDisponibles;
	private JButton btnCambiarNombre;
	private JButton btnModificarPlan;
	private JButton btnEliminarLinea;
	private Vector<LineaView> lineasCliente;
	private ClienteView cliente;
	private ListModel<LineaView> lstLineasClienteModel;
	private JComboBox<PlanView> cmbPlanesDisponibles;
	private LineaView lineaSeleccionada;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				GestionLineas inst = new GestionLineas();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public GestionLineas(){
		super();
		initGUI();
	}
	
	public GestionLineas(ClienteView clienteSeleccionado) {
		super();
		cliente = clienteSeleccionado;
		
		initGUI();
		lstLineasCliente.setSelectedIndex(0);
		btnCambiarNombre.setEnabled(false);
		
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				lblCliente = new JLabel();
				getContentPane().add(lblCliente);
				lblCliente.setText("Cliente");
				lblCliente.setBounds(12, 6, 348, 16);
				lblCliente.setText("Cliente Activo: "+ cliente.getNombre()+" " + cliente.getApellido());
				lblCliente.setHorizontalAlignment(SwingConstants.CENTER);
			}
			{
				lineasCliente = Sistema.getInstancia().listarLineasCliente(cliente.getDni());
				lstLineasClienteModel = new DefaultComboBoxModel<LineaView>(lineasCliente);
				lstLineasCliente = new JList<LineaView>();
				getContentPane().add(lstLineasCliente);
				lstLineasCliente.setModel(lstLineasClienteModel);
				lstLineasCliente.setBounds(12, 34, 348, 84);
				lstLineasCliente.addListSelectionListener(new ListSelectionListener() {
					public void valueChanged(ListSelectionEvent evt) {
						if(lstLineasCliente.getSelectedIndex() != -1){
							lineaSeleccionada = lstLineasCliente.getSelectedValue();
							if(lstLineasCliente.getSelectedValue().isAdicional()){								
								txtNombreAdicional.setText(((LineaAdicionalView)lineaSeleccionada).getNombreAdicional());	
								btnCambiarNombre.setEnabled(true);
							}else{
								btnCambiarNombre.setEnabled(false);
							}
						}
					}
				});
			}
			{
				btnEliminarLinea = new JButton();
				getContentPane().add(btnEliminarLinea);
				btnEliminarLinea.setText("Eliminar Linea");
				btnEliminarLinea.setBounds(12, 226, 149, 23);
				btnEliminarLinea.addActionListener(new ActionListener(){					
					public void actionPerformed(ActionEvent arg0) {
						int reply = JOptionPane.showConfirmDialog(btnEliminarLinea, "Esta seguro que desea eliminar la linea seleccionada?","Confirmacion", JOptionPane.YES_NO_OPTION);
						if (lstLineasCliente.getSelectedValue().isAdicional()){
							if(reply==JOptionPane.YES_OPTION){
								Sistema.getInstancia().desvincularLinea(cliente.getDni(), lstLineasCliente.getSelectedValue().getNroLinea());
								lineasCliente = Sistema.getInstancia().listarLineasCliente(cliente.getDni());
								lstLineasClienteModel = new DefaultComboBoxModel<LineaView>(lineasCliente);
								lstLineasCliente.setModel(lstLineasClienteModel);
							}
						}
						else JOptionPane.showMessageDialog(btnEliminarLinea, "La linea seleccionada no se puede eliminar por ser la linea titular.");
					}
					
					
				});
			}
			{
				btnModificarPlan = new JButton();
				getContentPane().add(btnModificarPlan);
				btnModificarPlan.setText("Modificar Plan");
				btnModificarPlan.setBounds(12, 192, 149, 23);
				btnModificarPlan.addActionListener(new ActionListener(){

					public void actionPerformed(ActionEvent arg0) {
						Sistema.getInstancia().setPlan(cliente.getDni(), ((LineaView)lstLineasCliente.getSelectedValue()).getNroLinea(), ((PlanView)cmbPlanesDisponibles.getSelectedItem()).getNroPlan());
						lineasCliente = Sistema.getInstancia().listarLineasCliente(cliente.getDni());
						lstLineasClienteModel = new DefaultComboBoxModel<LineaView>(lineasCliente);
						lstLineasCliente.setModel(lstLineasClienteModel);
					}
					
				});
			}
			{
				btnCambiarNombre = new JButton();
				getContentPane().add(btnCambiarNombre);
				btnCambiarNombre.setText("Cambiar Nombre Adicional");
				btnCambiarNombre.setBounds(183, 192, 190, 23);
				btnCambiarNombre.addActionListener(new ActionListener (){

					public void actionPerformed(ActionEvent arg0) {
						Sistema.getInstancia().cambiarNombreLineaAdicional(cliente.getDni(), lstLineasCliente.getSelectedValue().getNroLinea(), txtNombreAdicional.getText());
						lineasCliente = Sistema.getInstancia().listarLineasCliente(cliente.getDni());
						lstLineasClienteModel = new DefaultComboBoxModel<LineaView>(lineasCliente);
						lstLineasCliente.setModel(lstLineasClienteModel);
						
					}
					
				});
			}
			{
				lblPlanesDisponibles = new JLabel();
				getContentPane().add(lblPlanesDisponibles);
				lblPlanesDisponibles.setText("Plan");
				lblPlanesDisponibles.setBounds(12, 132, 42, 16);
			}
			{
				ComboBoxModel<PlanView> cmbPlanesDisponiblesModel = 
						new DefaultComboBoxModel<PlanView>(Sistema.getInstancia().getPlanesDisponibles());
				cmbPlanesDisponibles = new JComboBox<PlanView>();
				getContentPane().add(cmbPlanesDisponibles);
				cmbPlanesDisponibles.setModel(cmbPlanesDisponiblesModel);
				cmbPlanesDisponibles.setBounds(72, 130, 288, 21);
			}
			{
				txtNombreAdicional = new JTextField();
				getContentPane().add(txtNombreAdicional);
				txtNombreAdicional.setBounds(73, 157, 287, 23);
			}
			{
				lblNombre = new JLabel();
				getContentPane().add(lblNombre);
				lblNombre.setText("Nombre");
				lblNombre.setBounds(11, 160, 50, 16);
			}
			{
				btnVerConsumos = new JButton();
				getContentPane().add(btnVerConsumos);
				btnVerConsumos.setText("Ver Consumos");
				btnVerConsumos.setBounds(183, 226, 190, 23);
				btnVerConsumos.addActionListener(new ActionListener() {									
					public void actionPerformed(ActionEvent arg0) {
						ConsumoCliente app = new ConsumoCliente(cliente, lineaSeleccionada);
						app.setLocationRelativeTo(null);
						app.setVisible(true);
					}
				});
			}
			pack();
			setSize(400, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
